/**
 * $Id: TestMain.java,v 1.0 2022/6/5 16:29 shidesheng Exp $
 * <p>
 * Copyright 2021 Sinosoft Co.,Ltd. All rights reserved.
 */
package sds.mode.factory.abstracts;

/**
 * @author shidesheng
 * @version $Id: TestMain.java,v 1.1 2022/6/5 16:29 shidesheng Exp $
 * Created on 2022/6/5 16:29
 *
 * 抽象工厂模式
 * 定义：
 * 抽象工厂模式是指提供一个一系列相关或相互依赖对象的接口，无需指定他们具体的类。
 * 适用场景：
 * 强调一系列相关的产品对象（属于同一产品族）一起使用创建对象需要大量重复的代码
 * 提供一个产品类的库，所有的产品以同样的接口出现，从而使客户端不依赖具体的实现
 * 产品族： 一系列相关的产品，整合到一起有关联性
 * 产品等级：同一个继承体系
 * 缺点：
 * 规定了所有可能被创建的产品集合，产品中扩展新的产品困难，需要修改抽象工厂的接口
 * 增加了系统的抽象性和理解难度
 * 优点：
 * 具体产品在应用层代码隔离，无需关心创建细节
 * 将一系列的产品族统一到一起创建
 */
public class TestMain {

	public static void main(String[] args) {
		AbstractCourseFactory factory = new JavaCourseFactory();
		factory.init();
		factory.startStudy().study();
		factory.createNote().edit();
		factory.StartVideo().record();
		factory.finish();
		factory.destroy();
	}

}
